Previous: GGC Roots, Up: Type Information

### 20.3 Source Files Containing Type Information

Whenever you add `GTY` markers to a source file that previously had none, or create a new source file containing `GTY` markers, there are three things you need to do:

1. You need to add the file to the list of source files the type machinery scans. There are four cases:
   1. For a back-end file, this is usually done automatically; if not, you should add it to `target_gtfiles` in the appropriate port's entries in config.gcc.
   2. For files shared by all front ends, add the filename to the `GTFILES` variable in Makefile.in.
   3. For files that are part of one front end, add the filename to the `gtfiles` variable defined in the appropriate config-lang.in. For C, the file is c-config-lang.in.
   4. For files that are part of some but not all front ends, add the filename to the `gtfiles` variable of all the front ends that use it.
2. If the file was a header file, you'll need to check that it's included in the right place to be visible to the generated files. For a back-end header file, this should be done automatically. For a front-end header file, it needs to be included by the same file that includes gtype-lang.h. For other header files, it needs to be included in gtype-desc.c, which is a generated file, so add it to `ifiles` in `open_base_file` in gengtype.c.

   For source files that aren't header files, the machinery will generate a header file that should be included in the source file you just changed. The file will be called gt-path.h where path is the pathname relative to the gcc directory with slashes replaced by `-`, so for example the header file to be included in cp/parser.c is called gt-cp-parser.c. The generated header file should be included after everything else in the source file. Don't forget to mention this file as a dependency in the Makefile!

For language frontends, there is another file that needs to be included somewhere. It will be called gtype-lang.h, where lang is the name of the subdirectory the language is contained in.